import router from './router'
import store from './store'
import 'nprogress/nprogress.css'
import NProgress from 'nprogress'
import { getToken } from '@/utils/auth'
import getPageTitle from '@/utils/get-page-title'
import { message } from '@/hooks'
import { officalWeb } from '@/commom/libs'

NProgress.configure({ showSpinner: false })
router.beforeEach(async (to, from, next) => {
  // 解决三级路由不缓存的问题
  // if (to.matched && to.matched.length > 2) {
  //   to.matched.forEach((item, index) => {
  //     if (item.components.default.name === 'ParentView') {
  //       to.matched.splice(index, 1)
  //     }
  //   })
  // }

  // 进度条开始
  NProgress.start()

  // 设置标题
  document.title = getPageTitle(to.meta.title)
  const whiteList = ['/login', '/410', '/404', '/401']

  // 判断用户是否登陆
  const hasToken = getToken()
  if (hasToken && hasToken !== 'null') {
    next()
  } else {
    if (to.path === '/home') {
      next()
    } else {
      message.error('请重新登录')
      setTimeout(() => {
        window.location.href = officalWeb
      }, 500)
    }
  }
  // if (hasToken && hasToken !== 'null') {
  //   next()
  // } else {
  //   next()
  // }

  // if (hasToken && hasToken !== 'null') {
  //   if (to.path === '/login') {
  //     // 有token重定向到首页
  //     next({ path: '/' })
  //     NProgress.done()
  //   } else {
  //     const hasRoles = store.getters.roles && store.getters.roles.length > 0
  //     if (hasRoles) {
  //       next()
  //     } else {
  //       try {
  //         // 获取角色
  //         const roles = await store.dispatch('user/getInfo')

  //         // 生成有权限的路由
  //         const accessRoutes = await store.dispatch(
  //           'permission/generateRoutes',
  //           roles
  //         )

  //         // 动态添加可访问路由
  //         router.addRoutes(accessRoutes)
  //         next({ ...to, replace: true })
  //       } catch (error) {
  //         // 删除token退出登陆
  //         await store.dispatch('user/resetToken')
  //         message.error(error || 'Has Error')
  //         next(`/login?redirect=${to.path}`)
  //         NProgress.done()
  //       }
  //     }
  //   }
  // } else {
  //   if (whiteList.indexOf(to.path) !== -1) {
  //     next()
  //   } else {
  //     next()
  //     // next(`/login?redirect=${to.path}`)
  //     NProgress.done()
  //   }
  // }
})

router.afterEach(() => {
  NProgress.done()
})
